﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using IUAP.DAL.Intranet;
using IUAP.DAL;

/// <summary>
/// Descripción breve de Asistencias
/// </summary>
namespace IUAP.BLL.Intranet
{
    public class Asistencias:BaseIntranet
    {
        public Asistencias()
        {

        }

        public Asistencias(int _id_asistencia
            , int _id_curso
            , int _id_periodo
            , string _alum_usua
            , string _fech_asis
            , string _esta_asis)
        {
            this.Id_asistencia = _id_asistencia;
            this.Id_curso = _id_curso;
            this.Id_periodo = _id_periodo;
            this.Alum_usua = _alum_usua;
            this.Fech_asis = _fech_asis;
            this.Esta_asis = _esta_asis;
        }

        int id_asistencia = 0;

        public int Id_asistencia
        {
            get { return id_asistencia; }
            set { id_asistencia = value; }
        }
        int id_curso = 0;

        public int Id_curso
        {
            get { return id_curso; }
            set { id_curso = value; }
        }
        int id_periodo = 0;

        public int Id_periodo
        {
            get { return id_periodo; }
            set { id_periodo = value; }
        }
        string alum_usua = "";

        public string Alum_usua
        {
            get { return alum_usua; }
            set { alum_usua = value; }
        }
        string fech_asis = "";

        public string Fech_asis
        {
            get { return fech_asis; }
            set { fech_asis = value; }
        }
        string esta_asis = null;

        public string Esta_asis
        {
            get { return esta_asis; }
            set { esta_asis = value; }
        }
        public static int InsertAsistencia(int id_curso, int id_periodo, string alum_usua, string fech_asis)
        {
            AsistenciasDetalles record = new AsistenciasDetalles(0, id_curso, id_periodo, alum_usua, fech_asis, "");
            int ret = SiteProvider.Intranet.InsertAsistencia(record);
            BizObject.PurgeCacheItems("Intranet_Asistencias");
            return ret;
        }
        public static bool UpdateAsistencia(int id_asistencia, bool esta_asis)
        {
            bool ret = SiteProvider.Intranet.UpdateAsistencia(id_asistencia, esta_asis);
            BizObject.PurgeCacheItems("Intranet_Asistencias");
            return ret;
        }
        public static List<Asistencias> GetAsistenciasbyAlumno(int id_curso, int id_periodo, string id_alumno, DateTime fecha_inicio, DateTime fecha_termino)
        {
            List<Asistencias> asistencias = null;
            string key = "Intranet_Asistencias";
            if (BaseIntranet.Settings.EnableCaching && BizObject.Cache[key] != null)
            {
                asistencias = (List<Asistencias>)BizObject.Cache[key];
            }
            else
            {
                List<AsistenciasDetalles> recordset = SiteProvider.Intranet.GetAsistenciasbyAlumno(id_curso,id_periodo, id_alumno,fecha_inicio,fecha_termino);
                asistencias = GetAsistenciaListFromAsistenciasDetallesList(recordset);
                BaseIntranet.CacheData(key, asistencias);
            }
            return asistencias;
        }
        private static Asistencias GetAsistenciasFromAsistenciasDetalles(AsistenciasDetalles record)
        {
            if (record == null)
                return null;
            else
            {
                return new Asistencias(record.Id_asistencia, record.Id_curso, record.Id_periodo,
                    record.Alum_usua,record.Fech_asis,record.Esta_asis);
            }
        }
        private static List<Asistencias> GetAsistenciaListFromAsistenciasDetallesList(List<AsistenciasDetalles> recordset)
        {
            List<Asistencias> asistencias = new List<Asistencias>();
            foreach (AsistenciasDetalles record in recordset)
                asistencias.Add(GetAsistenciasFromAsistenciasDetalles(record));
            return asistencias;
        }
    }
}